from django.shortcuts import render

# Create your views here.

from .models import Area



# id        name        parent_id

# 10000     北京          NULL            # 省


# 11000     北京市         10000           #市


# 11001     顺义区         11000           #区县
# 11002     海淀区         11000           #区县
# 11003     朝阳区         11000           #区县


# 省份信息
# select * from tb_areas where parent_id is null

# GET       areas/infos/


# 市的信息
# select * from tb_areas where parent_id=130000
# 区县的信息
#select * from tb_areas where parent_id=130600


# GET       areas/infos/pk/


#  可以写2个视图

# 也可以用视图集
from rest_framework.viewsets import ReadOnlyModelViewSet
from .serializers import AreaSerializer,AreaSerializer1
from rest_framework_extensions.cache.mixins import ListCacheResponseMixin,RetrieveCacheResponseMixin,CacheResponseMixin
class AreasReadOnlyViewSet(CacheResponseMixin,ReadOnlyModelViewSet):

    # GenericAPIVIew
    #

    """
    queryset - 应该用于从此视图返回对象的查询集。通常，您必须设置此属性，
    或覆盖该get_queryset()方法。如果要覆盖视图方法，
    则必须调用get_queryset()而不是直接访问此属性，
    因为queryset将进行一次评估，并且将为所有后续请求缓存这些结果。

    serializer_class - 应该用于验证和反序列化输入以及序列化输出的序列化程序类。
    通常，您必须设置此属性，或覆盖该get_serializer_class()方法
    """

    """
    list        GET     /areas/infos/        获取省份信息
    retrieve    GET     /areas/infos/pk/     获取市 区县信息
    """

    # queryset = Books.objects.all()
    #
    # def get_queryset(self):
    #     return Books.objects.all()

    # queryset = Area.objects.filter(parent__isnull=True)#省
    # queryset = Area.objects.all()                       # 所有信息 是以前列表数据的数据源

    # 重写方法 可以根据需求 返回不同的查询结果集
    def get_queryset(self):

        # action 就表示 list,retrieve,update.等http操作
        if self.action == 'list':
            #省
            return Area.objects.filter(parent__isnull=True)
        else:
            #市
            return Area.objects.all()





    # serializer_class = AreaSerializer             省的序列化器
    # serializer_class = AreaSerializer1              #市的的序列化器


    def get_serializer_class(self):
        if self.action == 'list':
            # 省
            return AreaSerializer
        else:
            #市
            return AreaSerializer1
